/**
 * @param {number} n
 * @param {number} k
 * @return {number[][]}
 */
 var combine = function(n, k) {
    let res = [] // 结果数组 储存这个回溯得到的结果
    let path = [] // 储存这个的路径
    // 定义回溯的函数
    // 参数 n,k和这个遍历的起始数字 返回值就是没有
    // 退出 当让path的大小等于k的时候 就退出
    // 单层逻辑 遍历 放入path数组 回溯函数调用 弹出上次插入的数字
    const backTracting = function(n,k,startIndex){
      if(path.length === k){
        res.push([...path])
        return        
      }
      for(let i = startIndex;i < n;i++){
        path.push(i)
        backTracting(n,k,i+1)
        path.pop()
      }
    }
    backTracting(n,k,1)
    return res
};